 /*******************************************************************************
  * Copyright (c) 2003, 2005 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/

 package org.eclipse.osgi.framework.internal.core;

 import java.util.EventObject ;

 /**
  * StartLevel Event for the OSGi framework.
  *
  * Event which signifies that a start level change has been requested for the framework or for a bundle.
  *
  */
 class StartLevelEvent extends EventObject {
     private static final long serialVersionUID = 3258125839085155891L;
     public final static int CHANGE_BUNDLE_SL = 0x00000000;
     public final static int CHANGE_FW_SL = 0x00000001;

     /**
      * Event Type
      */
     private transient int type;

     /**
      * StartLevel - value depends on event type:
      * CHANGE_BUNDLE_SL - value is the new bundle startlevel
      * CHANGE_FW_SL - value is the new framework startlevel
      *
      */
     private transient int newSl;

     /**
      * For a change in bundle startlevel, this is the bundle to be changed.
      * For a change in framework startlevel, this is the bundle requesting the change.
      */
     private transient AbstractBundle bundle;

     /**
      * Creates a StartLevel event regarding the specified bundle.
      *
      * @param type The type of startlevel event (inc or dec)
      * @param newSl the ultimate requested startlevel we are on our way to
      * @param bundle The affected bundle, or system bundle if it is for the framework
      */
     public StartLevelEvent(int type, int newSl, AbstractBundle bundle) {
         super(bundle);
         this.type = type;
         this.newSl = newSl;
         this.bundle = bundle;
     }

     public int getType() {
         return this.type;
     }

     public int getNewSL() {
         return this.newSl;
     }

     public AbstractBundle getBundle() {
         return this.bundle;
     }

 }

